package ar.com.viajes.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import ar.com.viajes.dominio.Ciudad;
import ar.com.viajes.dominio.Empresa;
import ar.com.viajes.dominio.Servicio;
import ar.com.viajes.dominio.Viaje;
import ar.com.viajes.form.ViajeAbmForm;
import ar.com.viajes.services.ServiceFacade;
import ar.com.viajes.services.SpringUtil;

public class ViajesAbmAction extends DispatchAction {

	public ActionForward beforeUpdate(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		
		
		ViajeAbmForm viajeAbmForm = (ViajeAbmForm) form;

		String id = request.getParameter("id");
		int identi = Integer.parseInt(id);
		ServiceFacade facade =(ServiceFacade)SpringUtil.getBean("serviceFacade");
		Viaje viaje= facade.getViajeDao().obtenerViaje(identi);
	
	
		request.setAttribute("listaCiudad", facade.getCiudadDao().getAll());
		request.setAttribute("listaEmpresa", facade.getEmpresaDao().getAll());
		request.setAttribute("listaServicio", facade.getServicioDao().getAll());

		viajeAbmForm.setEmpresaId(viaje.getEmpresa().getId());
		viajeAbmForm.setCiudadId(viaje.getCiudad().getId());
		viajeAbmForm.setServicioId(viaje.getServicio().getId());
		viajeAbmForm.setHora_salida(viaje.getHora_salida());
		viajeAbmForm.setHora_llegada(viaje.getHora_llegada());
		viajeAbmForm.setCalidad(viaje.getCalidad());
		viajeAbmForm.setPrecio(viaje.getPrecio());
		

		viajeAbmForm.setEvent("update");
		return mapping.findForward("beforeUpdate");

	}

	public ActionForward update(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		
		if ( this.isCancelled(request) ){
			
			
			  return mapping.findForward("cancel");
		}else{
			
		ServiceFacade facade =(ServiceFacade)SpringUtil.getBean("serviceFacade");
	
		Viaje viaje = (Viaje)SpringUtil.getBean("viaje");
		ViajeAbmForm viajeAbmForm = (ViajeAbmForm) form;
	

		Empresa emp = facade.getEmpresaDao().obtenerEmpresa(viajeAbmForm.getEmpresaId());
		  Servicio serv = facade.getServicioDao().obtenerServicio(viajeAbmForm.getServicioId());
		Ciudad ciuda = facade.getCiudadDao().obtenerCiudad(viajeAbmForm.getCiudadId());
		viaje.setId(viajeAbmForm.getId());
		viaje.setEmpresa(emp);
		viaje.setServicio(serv);
		viaje.setCiudad(ciuda);
		viaje.setCalidad(viajeAbmForm.getCalidad());
		viaje.setHora_llegada(viajeAbmForm.getHora_llegada());
		viaje.setHora_salida(viajeAbmForm.getHora_salida());
		viaje.setPrecio(viajeAbmForm.getPrecio());
     facade.getViajeDao().modificarViaje(viaje);

	
		return mapping.findForward("update");
		
		}
	}

	public ActionForward PreAltaViajes(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		ViajeAbmForm viajeAbmForm = (ViajeAbmForm) form;
		
		ServiceFacade facade =(ServiceFacade)SpringUtil.getBean("serviceFacade");

		request.setAttribute("listaCiudad", facade.getCiudadDao().getAll());
		request.setAttribute("listaEmpresa", facade.getEmpresaDao().getAll());
		request.setAttribute("listaServicio", facade.getServicioDao().getAll());
		
		viajeAbmForm.setHora_llegada("");
		viajeAbmForm.setHora_salida("");
		viajeAbmForm.setEstado(" ");
		viajeAbmForm.setCalidad("");
		viajeAbmForm.setPrecio(0);
		viajeAbmForm.setId(0);
		
		viajeAbmForm.setEvent("alta");
		return mapping.findForward("PreAltaViajes");
	}

	public ActionForward alta (ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		ServiceFacade facade =(ServiceFacade)SpringUtil.getBean("serviceFacade");
		ViajeAbmForm viajeAbmForm = (ViajeAbmForm) form;
		Viaje viaje = (Viaje)SpringUtil.getBean("viaje");
		
		Empresa emp = facade.getEmpresaDao().obtenerEmpresa(viajeAbmForm.getEmpresaId());
		  Servicio serv = facade.getServicioDao().obtenerServicio(viajeAbmForm.getServicioId());
		Ciudad ciuda = facade.getCiudadDao().obtenerCiudad(viajeAbmForm.getCiudadId());
		
		viaje.setEmpresa(emp);
		viaje.setServicio(serv);
		viaje.setCiudad(ciuda);

	


  viaje.setHora_salida(viajeAbmForm.getHora_salida());
		
		viaje.setHora_llegada(viajeAbmForm.getHora_llegada());
		
		viaje.setCalidad(viajeAbmForm.getCalidad());

		viaje.setPrecio(viajeAbmForm.getPrecio());
		viaje.setEstado("ACTIVO");

		
		facade.getViajeDao().insertar(viaje);
		return mapping.findForward("alta");
	}
	
	public ActionForward preBaja(ActionMapping mapping, ActionForm form,			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		ViajeAbmForm viajeAbmForm = (ViajeAbmForm) form;

		String id = request.getParameter("id");
		int identi = Integer.parseInt(id);
		ServiceFacade facade =(ServiceFacade)SpringUtil.getBean("serviceFacade");
	
	
		Viaje viaje = facade.getViajeDao().obtenerViaje(identi);

      

		request.setAttribute("listaCiudad", facade.getCiudadDao().getAll());
		request.setAttribute("listaEmpresa", facade.getEmpresaDao().getAll());
		request.setAttribute("listaServicio", facade.getServicioDao().getAll());

		viajeAbmForm.setEmpresaId(viaje.getEmpresa().getId());
		viajeAbmForm.setCiudadId(viaje.getCiudad().getId());
		viajeAbmForm.setServicioId(viaje.getServicio().getId());
		viajeAbmForm.setHora_salida(viaje.getHora_salida());
		viajeAbmForm.setHora_llegada(viaje.getHora_llegada());
		viajeAbmForm.setCalidad(viaje.getCalidad());
		viajeAbmForm.setPrecio(viaje.getPrecio());
				

		viajeAbmForm.setEvent("baja");
		
		return mapping.findForward("preBaja");
	}
		public ActionForward baja(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
			
			
			if ( this.isCancelled(request) ){
				
				
				  return mapping.findForward("cancel");
			}else{
			ServiceFacade facade =(ServiceFacade)SpringUtil.getBean("serviceFacade");
		
			Viaje viaje = (Viaje)SpringUtil.getBean("viaje");
			ViajeAbmForm viajeAbmForm = (ViajeAbmForm) form;
			
			Empresa emp = facade.getEmpresaDao().obtenerEmpresa(viajeAbmForm.getEmpresaId());
			  Servicio serv = facade.getServicioDao().obtenerServicio(viajeAbmForm.getServicioId());
			Ciudad ciuda = facade.getCiudadDao().obtenerCiudad(viajeAbmForm.getCiudadId());
			
			
					
			
			viaje.setId(viajeAbmForm.getId());
			viaje.setEmpresa(emp);
			viaje.setServicio(serv);
			viaje.setCiudad(ciuda);
			viaje.setHora_llegada(viajeAbmForm.getHora_llegada());
			viaje.setHora_salida(viajeAbmForm.getHora_salida());
			viaje.setPrecio(viajeAbmForm.getPrecio());
			viaje.setEstado("INACTIVO");
			facade.getViajeDao().modificarViaje(viaje);
			return mapping.findForward("baja");
			}

	}

	

}
